package consume.jms.onetoone;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.jms.*;

/**
 * @author xiaohong
 * @version 1.0
 * @date 2021/11/14 0014 15:48
 * @description JMS 点对点模式 创建消费者 接收消息
 */
@RequestMapping("/jms")
@RestController
public class JMSReceiveController {

    @GetMapping("/onetoone")
    public void jmsConsume() throws JMSException {
//        1.创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://42.193.246.110:61616");
//        2.创建连接
        Connection connection = connectionFactory.createConnection();
//        3.打开连接
        connection.start();
//        4.创建session
        /**
         * 参数一 是否开启事务
         * 参数二 消息确认机制
         */
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

//        5.创建目标地址(Queue:点对点消息，Topic:发布订阅消息>
        Queue queue = session.createQueue("queue01");

//        6.创建消息消费者
        MessageConsumer consumer = session.createConsumer(queue);

//        7.接收消息
        while (true){
            Message message = consumer.receive();

            // 如果没有消息了 退出循环
            if (message == null){
                break;
            }

            // 如果还有消息 判断是什么类型的消息
            if (message instanceof TextMessage){
                TextMessage textMessage = (TextMessage) message;
                System.out.println("JMS主动接收到消息："+textMessage.getText());
            }

        }

    }


}
